草庐IT

C++ 变暖标准 vector

全部标签

C++11 对模板参数类型的 vector 使用迭代器

这个问题在这里已经有了答案:WhereandwhydoIhavetoputthe"template"and"typename"keywords?(8个答案)关闭6年前。我有一个模板类,其中包含作为模板参数给出的类型的指针vector。我希望能够使用基于范围的迭代来迭代vector的有限部分。我的类包含以下功能:templateclassObjectList{...public://!Beginiterationoveralistofobjectsstd::vector::iteratorbegin();//!Iteratortoonepasttheendofthelistofobjec

C++ Std 队列和 vector 性能

我最近一直在处理图形,我正在研究从图形返回路径。该路径需要作为包含所有节点的标准vector返回,其中起始节点在前。我一直在寻找两种选择:-使用slowvectorinsert方法在vector前面添加节点-使用双端队列将节点添加到前端(push_front),这样速度更快。然后使用std::copy将双端队列复制到vector与另一种方法相比,使用一种方法是否有显着的性能提升? 最佳答案 由于您要返回一条路径,因此您可能对其长度有一个上限。因此,您可以调用创建一个vector,调用reserve之后(如@user2079303所写

C++ - 高效计算 vector 矩阵乘积

我需要尽可能高效地计算乘积vector矩阵。具体来说,给定一个vectors和一个矩阵A,我需要计算s*A。我有一个Vector类,它包装了一个std::vector和一个Matrix类,它也包装了一个std::vector(为了效率)。天真的方法(我现在正在使用的方法)是有类似的东西VectortimesMatrix(Matrix&matrix){Vectorresult(matrix.columns());//constructorthatdoesaresizeontheunderlyingstd::vectorfor(unsignedinti=0;i它工作正常,耗时将近12000

c++ - C++ 中的整数范围——当标准还不存在时我该怎么办?

我知道C++重量级人物正在努力将范围引入语言,或者至少是标准库:EricNieblerdiscussesrangesonhisblogInterviewwith@BjarneStroustruponhisthoughtsreC++17ISOC++标准委员会(SC22)proposalN4128作者:Niebler、Parent和Sutton公平地说-我还没有通读官方建议。我只是一个想使用简单范围功能的谦虚C++程序员。今天我应该做什么而不是在C++17之后使用,比方说,简单的整数范围和步幅?当然,当我开始实际使用范围时,我的要求可能会扩大,但我仍然不追求更奇特的东西和各种极端情况。我想

c++ - 矩阵 vector 乘法优化 - 缓存大小

这个问题是关于C++优化技术的。我有一个大尺寸的矩阵vector乘法,想减少运行时间。我知道有专门的线性代数库,但我实际上想了解一下底层处理器的特性。到目前为止,我正在使用\O2(Microsoft)进行编译,并让编译器确认乘法的内部循环是矢量化的。示例代码是:#include#include#include#defineVEC_LENGTH64#defineITERATIONS4000000voidgen_vector_matrix_multiplication(double*vec_result,double*vec_a,double*matrix_B,unsignedintcol

c++ - optional<T> 进入 C++ 标准的含义

std::optional构造最近(?)被采用到C++17语言标准中。现在,现有API中有很多地方std::optional是替代函数返回类型的候选者;本质上,这些函数试图检索/生成某些东西,但不能保证一定会成功:在容器中查找元素。通过键访问映射中的值。分配内存从文件或网络建立输入/输出流因此,我的问题是:标准委员会是否正在考虑(甚至已经接受)对涉及使用std::optional的已建立API进行更改/添加??如果是,标准的哪些部分(据您所知)可能会发生变化?C++17或更高版本是否会发生此类更改? 最佳答案 Isthestanda

c++ - 通过异常向 "invalid input"发出信号时是否存在事实上的标准异常或最佳实践方式?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭6年前。Improvethisquestioninvalid_argument是一个logic_error。两者都是referencesites表明行上的东西Thisclass[i.e.logic_error]definesthetypeofobjectsthrownasexceptionstoreporterrorsintheinternallogicaloftheprogram,suchasviolationoflogicalpr

c++ - 使用 boost::spirit::x3 解析为 vector<boost::string_view>

这是我的previousone的后续问题关于boost::spirit::x3和boost::string_view.虽然我可以解析成std::vector(liveexample),解析为std::vector失败并出现以下编译错误:#include#include#includenamespaceboost{namespacespirit{namespacex3{namespacetraits{templatevoidmove_to(Itb,Ite,boost::string_view&v){v=boost::string_view(b,std::size_t(std::dista

c++ - 从 vector 中删除项目时出现 Valgrind 错误

对于你们中的大多数人来说,这可能看起来像是重复的。但是我花了很多时间来解决这个问题。实现了stackoverflow和其他编码站点中给出的许多解决方案。最后我设法修复了它,但我仍然不知道我的旧实现有什么问题。请帮助我找出导致确切错误的原因,查看我的旧代码、新代码、单元测试和valgrind错误。注意:我正在通过单元测试(Google测试框架)测试我的代码。使用C++11编译m_queue_是一个std::vector使用GoogleC++编码标准测试:队列有2个SAPA项目(由新运算符(operator)创建)通过id删除第一个项目(队列现在只有一个)删除唯一的项目由它的id留下第二次

c++ - C++ 标准是否为 unordered_set 定义了桶的结构?

当计算出unordered_set中某个元素的哈希值时,它会与其他不同但哈希值相同的元素一起放入“桶”中。我的经验是,这样一个桶中的元素是存储在一个单向链表中的。这意味着,在哈希函数不佳的存储桶内搜索时,它会变得非常慢。单向链表是标准的要求还是只是一种可能的实现方式?可以用set作为桶来实现unordered_set吗? 最佳答案 标准规定了要求和保证,但没有明确强制底层数据结构和算法。N4140§23.2.5[unord.req]/1Unorderedassociativecontainersprovideanabilityfor